home *** CD-ROM | disk | FTP | other *** search
/ Your Web Site Creator / Your Web Site Creator.iso / WebSite / data1.cab / Program_Executable_Files / Classes / TXTECAN2.CLA (.txt) < prev    next >
Encoding:
Java Class File  |  1999-01-13  |  6.9 KB  |  317 lines

  1. import java.applet.Applet;
  2. import java.awt.Canvas;
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Image;
  10.  
  11. public class TextEffectsCanvas2 extends Canvas implements Runnable {
  12.    Thread appThread;
  13.    Image osImage;
  14.    Graphics osg;
  15.    Color bkColor;
  16.    Image bkImage;
  17.    int delayTime;
  18.    int sleepTime;
  19.    String message;
  20.    Font font;
  21.    int charWidth;
  22.    Color[] colors = new Color[13];
  23.    char theChar;
  24.    int colorIndex;
  25.    // $FF: renamed from: fm java.awt.FontMetrics
  26.    FontMetrics field_0;
  27.    int xOffset;
  28.    int yOffset;
  29.    int xPos;
  30.    int yPos;
  31.    boolean randomColors;
  32.    Color textColor;
  33.    boolean jitterText;
  34.    boolean waveText;
  35.    boolean fanText;
  36.    int baseLine;
  37.    int angleIndex;
  38.    double angleStep = (double)0.25F;
  39.    int width;
  40.    int height;
  41.    int centerX;
  42.    int centerY;
  43.    double[] cosines;
  44.    double[] sines;
  45.    int cosSinSize;
  46.    int fanDisplayTime;
  47.    int[] fanXPos;
  48.    int fanMovements;
  49.    int fanCount;
  50.    boolean animatingFan;
  51.  
  52.    public TextEffectsCanvas2(Applet var1, int var2) {
  53.       this.colors[0] = Color.black;
  54.       this.colors[1] = Color.blue;
  55.       this.colors[2] = Color.cyan;
  56.       this.colors[3] = Color.darkGray;
  57.       this.colors[4] = Color.gray;
  58.       this.colors[5] = Color.green;
  59.       this.colors[6] = Color.lightGray;
  60.       this.colors[7] = Color.magenta;
  61.       this.colors[8] = Color.orange;
  62.       this.colors[9] = Color.pink;
  63.       this.colors[10] = Color.red;
  64.       this.colors[11] = Color.white;
  65.       this.colors[12] = Color.yellow;
  66.       this.GetParameters(var1, var2);
  67.       this.PreComputeValues();
  68.       this.fanXPos = new int[this.message.length()];
  69.    }
  70.  
  71.    void GetParameters(Applet var1, int var2) {
  72.       String var3 = var1.getParameter("textEffectsBkColor" + var2);
  73.       this.bkColor = AppletParam2.GetColor(var3, (Color)null);
  74.       if (this.bkColor != null) {
  75.          ((Component)this).setBackground(this.bkColor);
  76.       }
  77.  
  78.       var3 = var1.getParameter("textEffectsBkImage" + var2);
  79.       this.bkImage = var1.getImage(var1.getCodeBase(), var3);
  80.       var3 = var1.getParameter("textEffectsInterval" + var2);
  81.       this.delayTime = AppletParam2.GetInt(var3, 250);
  82.       this.sleepTime = this.delayTime;
  83.       var3 = var1.getParameter("textEffectsText" + var2);
  84.       this.message = AppletParam2.GetString(var3, "Message");
  85.       var3 = var1.getParameter("textEffectsFont" + var2);
  86.       this.font = AppletParam2.GetJavaFont(var3);
  87.       this.field_0 = ((Component)this).getFontMetrics(this.font);
  88.       var3 = var1.getParameter("textEffectsRandomize" + var2);
  89.       this.randomColors = AppletParam2.GetBoolean(var3, true);
  90.       var3 = var1.getParameter("textEffectsColor" + var2);
  91.       this.textColor = AppletParam2.GetColor(var3, Color.black);
  92.       var3 = var1.getParameter("textEffectsJitter" + var2);
  93.       this.jitterText = AppletParam2.GetBoolean(var3, true);
  94.       if (this.jitterText) {
  95.          this.waveText = false;
  96.          this.fanText = false;
  97.       }
  98.  
  99.       var3 = var1.getParameter("textEffectsWave" + var2);
  100.       this.waveText = AppletParam2.GetBoolean(var3, false);
  101.       if (this.waveText) {
  102.          this.jitterText = false;
  103.          this.fanText = false;
  104.       }
  105.  
  106.       var3 = var1.getParameter("textEffectsFan" + var2);
  107.       this.fanText = AppletParam2.GetBoolean(var3, false);
  108.       if (this.fanText) {
  109.          this.jitterText = false;
  110.          this.waveText = false;
  111.          this.animatingFan = true;
  112.       }
  113.  
  114.       var3 = var1.getParameter("textEffectsFanTime" + var2);
  115.       this.fanDisplayTime = AppletParam2.GetInt(var3, 5000);
  116.    }
  117.  
  118.    public void Start() {
  119.       this.appThread = new Thread(this);
  120.       this.appThread.start();
  121.    }
  122.  
  123.    public void Stop() {
  124.       this.appThread.stop();
  125.       this.appThread = null;
  126.    }
  127.  
  128.    public void update(Graphics var1) {
  129.       System.out.println("update");
  130.       if (this.osImage == null) {
  131.          this.osImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
  132.          this.osg = this.osImage.getGraphics();
  133.       }
  134.  
  135.       this.osg.setColor(((Component)this).getBackground());
  136.       this.osg.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  137.       if (this.bkImage != null) {
  138.          int var2 = this.bkImage.getWidth(this);
  139.          int var3 = this.bkImage.getHeight(this);
  140.          int var4 = ((Component)this).size().width / var2;
  141.          int var5 = ((Component)this).size().height / var3;
  142.          ++var4;
  143.          ++var5;
  144.  
  145.          for(int var6 = 0; var6 < var5; ++var6) {
  146.             for(int var7 = 0; var7 < var4; ++var7) {
  147.                this.osg.drawImage(this.bkImage, var7 * var2, var6 * var3, this);
  148.             }
  149.          }
  150.       }
  151.  
  152.       this.osg.setFont(this.font);
  153.       this.baseLine = ((Component)this).size().height / 2 + this.field_0.getAscent() / 2 - 5;
  154.       this.field_0.stringWidth(this.message);
  155.       this.height = (((Component)this).size().height - 1 - this.field_0.getAscent()) / 2;
  156.       this.centerY = ((Component)this).size().height - this.height;
  157.       if (!this.jitterText && !this.waveText) {
  158.          if (this.fanText) {
  159.             System.out.println("Drawing fan text.  fanCount = " + this.fanCount);
  160.             this.xPos = ((Component)this).size().width / 2;
  161.             this.yPos = this.baseLine;
  162.             System.out.println("Characters before: " + 0 + "-" + (this.fanCount - 1));
  163.             System.out.println("Middle chars: " + this.fanCount + "-" + (this.message.length() - this.fanCount - 1));
  164.             System.out.println("Characters after: " + (this.message.length() - this.fanCount) + "-" + (this.message.length() - 1));
  165.             if (this.fanCount == 0) {
  166.                for(int var9 = 0; var9 < this.message.length(); ++var9) {
  167.                   if (this.randomColors) {
  168.                      this.colorIndex = (int)(Math.random() * (double)13.0F);
  169.                      this.osg.setColor(this.colors[this.colorIndex]);
  170.                   } else {
  171.                      this.osg.setColor(this.textColor);
  172.                   }
  173.  
  174.                   this.osg.drawString(this.message.substring(var9, var9 + 1), this.xPos, this.yPos);
  175.                }
  176.             }
  177.  
  178.             this.osg.setColor(this.textColor);
  179.             this.xPos -= this.field_0.stringWidth(this.message.substring(0, this.fanCount));
  180.             this.osg.drawString(this.message.substring(0, this.fanCount), this.xPos, this.yPos);
  181.             int var10 = 0;
  182.  
  183.             for(int var12 = this.fanCount; var12 <= this.message.length() - this.fanCount - 1; ++var12) {
  184.                this.osg.setColor(this.textColor);
  185.                this.xPos = ((Component)this).size().width / 2;
  186.                int var15 = this.field_0.stringWidth(this.message.substring(var12, var12 + 1));
  187.                if (var15 > var10) {
  188.                   var10 = var15;
  189.                }
  190.  
  191.                this.osg.drawString(this.message.substring(var12, var12 + 1), this.xPos, this.yPos);
  192.             }
  193.  
  194.             this.osg.setColor(this.textColor);
  195.             this.xPos = ((Component)this).size().width / 2;
  196.             this.xPos += var10;
  197.             this.osg.drawString(this.message.substring(this.message.length() - this.fanCount, this.message.length()), this.xPos, this.yPos);
  198.          }
  199.       } else {
  200.          for(int var8 = 0; var8 < this.message.length(); ++var8) {
  201.             String var11 = this.message.substring(var8, var8 + 1);
  202.             int var14 = this.field_0.stringWidth(var11);
  203.             if (this.randomColors) {
  204.                this.colorIndex = (int)(Math.random() * (double)13.0F);
  205.                this.osg.setColor(this.colors[this.colorIndex]);
  206.             } else {
  207.                this.osg.setColor(this.textColor);
  208.             }
  209.  
  210.             if (this.jitterText) {
  211.                this.xOffset = (int)(Math.random() * (double)10.0F);
  212.                this.yOffset = (int)(Math.random() * (double)10.0F);
  213.                this.xPos = var8 * this.charWidth + this.xOffset;
  214.                this.yPos = this.baseLine + this.yOffset;
  215.             } else if (this.waveText) {
  216.                this.width = (this.charWidth - var14) / 2;
  217.                this.centerX = var8 * this.charWidth + this.width;
  218.                this.xPos = (int)(this.cosines[(this.angleIndex + var8) % this.cosSinSize] * (double)this.width) + this.centerX;
  219.                this.yPos = (int)(this.sines[(this.angleIndex + var8) % this.cosSinSize] * (double)this.height) + this.centerY;
  220.             }
  221.  
  222.             this.osg.drawString(var11, this.xPos, this.yPos);
  223.          }
  224.       }
  225.  
  226.       var1.drawImage(this.osImage, 0, 0, this);
  227.       System.out.println("end update");
  228.    }
  229.  
  230.    public void run() {
  231.       while(true) {
  232.          try {
  233.             ((Component)this).repaint();
  234.             if (this.waveText) {
  235.                ++this.angleIndex;
  236.                if (this.angleIndex > this.cosSinSize) {
  237.                   this.angleIndex = 0;
  238.                }
  239.             } else if (this.fanText) {
  240.                System.out.println("fanCount = " + this.fanCount);
  241.                if (this.animatingFan) {
  242.                   if (this.fanCount + 1 > this.fanMovements) {
  243.                      this.animatingFan = false;
  244.                      this.sleepTime = this.fanDisplayTime;
  245.                   } else {
  246.                      ++this.fanCount;
  247.                      this.sleepTime = this.delayTime;
  248.                   }
  249.                }
  250.             }
  251.  
  252.             Thread.sleep((long)this.sleepTime);
  253.             if (this.fanText && !this.animatingFan) {
  254.                this.fanCount = 0;
  255.                this.animatingFan = true;
  256.             }
  257.          } catch (InterruptedException var1) {
  258.          }
  259.       }
  260.    }
  261.  
  262.    public Dimension minimumSize() {
  263.       return new Dimension(10, 10);
  264.    }
  265.  
  266.    public Dimension preferredSize() {
  267.       return new Dimension(10, 10);
  268.    }
  269.  
  270.    public synchronized void reshape(int var1, int var2, int var3, int var4) {
  271.       super.reshape(var1, var2, var3, var4);
  272.       this.osImage = null;
  273.       this.osg = null;
  274.       if (this.message.length() == 0) {
  275.          this.charWidth = 0;
  276.       } else {
  277.          this.charWidth = ((Component)this).size().width / this.message.length();
  278.       }
  279.  
  280.       this.InitializeFanXPos();
  281.    }
  282.  
  283.    void PreComputeValues() {
  284.       this.cosSinSize = (int)((Math.PI * 2D) / this.angleStep + (double)1.0F);
  285.       this.cosines = new double[this.cosSinSize];
  286.       this.sines = new double[this.cosSinSize];
  287.       int var1 = 0;
  288.  
  289.       for(double var2 = (double)0.0F; var2 < (Math.PI * 2D); var2 += this.angleStep) {
  290.          this.cosines[var1] = Math.cos(var2);
  291.          ++var1;
  292.       }
  293.  
  294.       var1 = 0;
  295.  
  296.       for(double var4 = (double)0.0F; var4 < (Math.PI * 2D); var4 += this.angleStep) {
  297.          this.sines[var1] = Math.sin(var4);
  298.          ++var1;
  299.       }
  300.  
  301.    }
  302.  
  303.    public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
  304.       ((Component)this).repaint();
  305.       return true;
  306.    }
  307.  
  308.    void InitializeFanXPos() {
  309.       for(int var1 = 0; var1 < this.message.length(); ++var1) {
  310.          this.fanXPos[var1] = ((Component)this).size().width / 2 - this.field_0.charWidth('W');
  311.       }
  312.  
  313.       this.fanMovements = this.message.length() / 2;
  314.       this.fanCount = 0;
  315.    }
  316. }
  317.